home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / BORLAND TURBO / TREEWIND.PAK / TREEWINX.CPP < prev   
C/C++ Source or Header  |  1997-05-06  |  4KB  |  160 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // Copyright (c) 1995, 1995 by Borland International, All Rights Reserved
  4. //----------------------------------------------------------------------------
  5. #include <owl/pch.h>
  6. #include <owl/treewind.h>
  7. #include <owl/imagelst.h>
  8. #include <classlib/pointer.h>
  9. #include "treewind.rh"
  10.  
  11. const int TestImage  = 100;
  12. const int TreeWindId = 101;
  13.  
  14. //
  15. // Class TClientWindow
  16. // ~~~~~ ~~~~~~~~~~~~~
  17. class TClientWindow : public TWindow {
  18.   public:
  19.     TClientWindow(TWindow* parent= 0);
  20.  
  21.   protected:
  22.     void SetupWindow();
  23.  
  24. #if defined(BI_PLAT_WIN32)
  25.     void CmSetState();
  26.     void CmGetState();
  27.  
  28.     // Event handlers
  29.     //
  30.     bool TvnItemExpanding(TTwNotify far& notify)
  31.     {
  32.       TTreeNode node(*TreeWind, notify.itemNew);
  33.       return false;
  34.     }
  35. #endif
  36.  
  37.   private:
  38.  
  39.     // Data members
  40.     //
  41.     TPointer<TTreeWindow> TreeWind;
  42.     TPointer<TImageList> ImageList;
  43.  
  44.   DECLARE_RESPONSE_TABLE(TClientWindow);
  45. };
  46.  
  47. DEFINE_RESPONSE_TABLE1(TClientWindow, TWindow)
  48. #if defined(BI_PLAT_WIN32)
  49.   EV_TVN_ITEMEXPANDING(TreeWindId, TvnItemExpanding),
  50.   EV_COMMAND(CM_SETSTATE, CmSetState),
  51.   EV_COMMAND(CM_GETSTATE, CmGetState),
  52. #endif
  53. END_RESPONSE_TABLE;
  54.  
  55. TClientWindow::TClientWindow(TWindow* parent)
  56. :
  57.   TWindow(parent)
  58. {
  59.   // set client window style
  60.   //
  61.   uint32 style = GetStyle();
  62.   SetStyle(style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
  63.  
  64.   // set treeview window style
  65.   //
  66.   style = TVS_HASLINES | TVS_HASBUTTONS;
  67. #if defined(BI_PLAT_WIN32)
  68.   style |= TVS_LINESATROOT;
  69. #endif
  70.  
  71.   TreeWind = new TTreeWindow(this, TreeWindId, 10, 10, 400, 200, style);
  72.  
  73.   ImageList = 0;
  74. #if defined(BI_PLAT_WIN32)
  75.   ImageList = new TImageList(*GetApplication(), TResId(TestImage),
  76.     20, 1, TColor(255, 255, 255), IMAGE_BITMAP, 0);
  77. #endif
  78. }
  79.  
  80.  
  81. #if defined(BI_PLAT_WIN32)
  82. void
  83. TClientWindow::CmSetState()
  84. {
  85.   TreeWind->GetSelection().SetState(TVIS_BOLD);
  86. }
  87.  
  88. void
  89. TClientWindow::CmGetState()
  90. {
  91.   char buffer[1024];
  92.   uint state;
  93.  
  94.   TTreeNode& node = TreeWind->GetSelection();
  95.   node.GetState(state);
  96.   if (state & TVIS_EXPANDED)
  97.     lstrcpy(buffer, "Selected node is expanded.");
  98.   else
  99.     lstrcpy(buffer, "Selected node is not expanded.");
  100.   MessageBox(buffer);
  101. }
  102. #endif
  103.  
  104. void
  105. TClientWindow::SetupWindow()
  106. {
  107.   TWindow::SetupWindow();
  108.  
  109.   // Initialize TreeWind
  110.   //
  111.   TTreeNode root = TreeWind->GetRoot();
  112.   root.AddChild(TTreeNode(*TreeWind, "Child 8"));
  113.  
  114.   TTreeNode parent1 = root.AddChild(TTreeNode(*TreeWind, "Parent 1"));
  115.   TTreeNode child1  = parent1.AddChild(TTreeNode(*TreeWind, "Child 1"));
  116.                       parent1.AddChild(TTreeNode(*TreeWind, "Child 2 (with some longer text)"));
  117.  
  118.   root.AddChild(TTreeNode(*TreeWind, "Child 0"));
  119.  
  120.   TTreeNode parent2 = root.AddChild(TTreeNode(*TreeWind, "Parent 2"));
  121.             parent2.AddChild(TTreeNode(*TreeWind, "Child 3"));
  122.             parent2.AddChild(TTreeNode(*TreeWind, "Child 4"));
  123.  
  124.   TTreeNode subParent1 = child1.InsertItem(TTreeNode(*TreeWind, "Subparent 1"));
  125.             subParent1.AddChild(TTreeNode(*TreeWind, "Child 5"));
  126.             subParent1.AddChild(TTreeNode(*TreeWind, "Child 6"));
  127.  
  128.   root.AddChild(TTreeNode(*TreeWind, "Child 7"));
  129.  
  130.   TreeWind->Update();
  131.  
  132.   parent2.ExpandItem(TVE_EXPAND);
  133. }
  134.  
  135. //----------------------------------------------------------------------------
  136.  
  137. //
  138. // Class TSampleApp
  139. // ~~~~~ ~~~~~~~~~~
  140. class TSampleApp : public TApplication {
  141.   public:
  142.     TSampleApp() : TApplication(){};
  143.     void InitMainWindow();
  144. };
  145.  
  146. void
  147. TSampleApp::InitMainWindow()
  148. {
  149.   TFrameWindow* frame = new TFrameWindow(0, 0, new TClientWindow);
  150.   frame->SetMenuDescr(TMenuDescr(IDM_MAINMENU));
  151.   SetMainWindow(frame);
  152.   GetMainWindow()->SetCaption("TreeWindow class");
  153. }
  154.  
  155. int
  156. OwlMain(int /*argc*/, char* /*argv*/[])
  157. {
  158.   return TSampleApp().Run();
  159. }
  160.